package com.clear.subject.domain.service;


import com.clear.subject.common.entity.PageResult;
import com.clear.subject.domain.entity.SubjectLikedBO;


/**
 * 点赞领域服务
 */
public interface SubjectLikedDomainService {

    /**
     * 题目点赞 或 取消点赞
     *
     * @param subjectLikedBO
     * @return
     */
    void add(SubjectLikedBO subjectLikedBO);

    void add2(SubjectLikedBO subjectLikedBO);


    /**
     * 获取当前题目是否被该用户点赞过
     *
     * @param subjectId 题目id
     * @param userId    用户id
     * @return  返回是否被点赞过
     */
    Boolean isLiked(String subjectId, String userId);


    /**
     * 获取题目点赞数量
     * @param subjectId 题目id
     * @return
     */
    Long getLikedCount(String subjectId);

    /**
     * 同步点赞数据到数据库
     */
    void syncLiked();

    /**
     * 根据mq消息 同步点赞数据
     */
    void syncLikedByMessage(SubjectLikedBO subjectLikedBO);

    /**
     * 查询我的点赞列表
     * @param subjectLikedBO
     * @return
     */
    PageResult<SubjectLikedBO> getSubjectLikedPage(SubjectLikedBO subjectLikedBO);
}
